from meiduo_admin.mypakge import *



# 订单管理的视图集
class ORDER___orderViewSet(ModelViewSet):
    # queryset = OrderInfo.objects.all()
    # serializer_class = order___OrderSerializer
    # pagination_class = MyPage
    queryset = OrderInfo.objects.all()
    serializer_class = order___OrderModelSerializer
    pagination_class = MyPage


    # 重写方法——
    # 如果有keyword字段，则用keyword字段进行过滤查找订单信息
    #  没有keyword字段，使用默认查询集查询所有，这是订单管理列表展示的原方法
    def get_queryset(self):
        keyword = self.request.query_params.get('keyword')
        if keyword:
            return self.queryset.filter(order_id_contains=keyword)
        return self.queryset.all()
    # 重写方法
    # 如果有pk字段，则使用另一个订单模型类序列化器，进行订单详情展示的数据的序列花
    # 没有pk字段，则使用嗯默认序列化器，进行数据列表画展示的数据的序列化
    def get_serializer_class(self):
        if self.kwargs.get('pk'):
            return order___OrderDetailModelSerializer
        return self.serializer_class

    # 重写get方法，因为有两个get方法冲突，列表化展示get》list，查询单条详细订单信息get》retrieve
    def get(self,request,*args, **kwargs):
        # if self.kwargs.get('pk'):
        #     return
        order_id = kwargs.get('pk')
        if order_id:
            return self.retrieve(request,*args,**kwargs)
        return self.list(request,*args,**kwargs)



    # 重写patch方法，部分更新订单信息的状态，调用partial_update方法进行部分更新
    def patch(self,request, *args, **kwargs):
        user = request.user
        return self.partial_update(request, *args, **kwargs)
